home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2007 December
/
PCWKCD1207B.iso
/
+ TYLKO W WERSJI CYFROWEJ +
/
PCWK_PROG
/
Source
/
120
/
ukryte1
/
fukryte1.cpp
next >
Wrap
C/C++ Source or Header
|
2007-07-05
|
5KB
|
169 lines
//
// Andrzej Stasiewicz, czerwiec, 2007
// Ukrywanie obrazu w obrazie
//
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "fukryte1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
// Odczyt pliku, wy£wietlenie z lewej strony i wyr≤wnanie parametr≤w
// obydwu obraz≤w
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if( OpenPictureDialog1 -> Execute())
{
Image1 -> Picture -> LoadFromFile( OpenPictureDialog1 -> FileName);
Image1 -> Picture -> Bitmap -> PixelFormat = pf32bit;
Image2 -> Picture -> Bitmap -> PixelFormat = pf32bit;
Image2 -> Picture -> Bitmap -> Width = Image1 -> Picture -> Bitmap -> Width;
Image2 -> Picture -> Bitmap -> Height = Image1 -> Picture -> Bitmap -> Height;
}
}
//---------------------------------------------------------------------------
// Zapis obrazka do pliku
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if( SavePictureDialog1 -> Execute())
{
Image2 -> Picture -> SaveToFile( SavePictureDialog1 -> FileName);
}
}
//---------------------------------------------------------------------------
// Wyzerowanie okre£lonej liczby bit≤w w kana│ach R, G, B
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int il_r = Edit1 -> Text.ToInt(),
il_g = Edit2 -> Text.ToInt(),
il_b = Edit3 -> Text.ToInt();
int i, j, n, szer, wys;
TColor k;
unsigned char r, g, b;
szer = Image2 -> Picture -> Bitmap -> Width;
wys = Image2 -> Picture -> Bitmap -> Height;
for( i = 0; i < szer; ++i)
{
for( j = 0; j < wys; ++j)
{
k = Image1 -> Picture -> Bitmap -> Canvas -> Pixels[ i][ j];
r = GetRValue( k);
g = GetGValue( k);
b = GetBValue( k);
for( n = 0; n < il_r; ++n)
r = ustaw_bit( r, n, 0);
for( n = 0; n < il_g; ++n)
g = ustaw_bit( g, n, 0);
for( n = 0; n < il_b; ++n)
b = ustaw_bit( b, n, 0);
Image2 -> Picture -> Bitmap -> Canvas -> Pixels[ i][ j] = RGB( r, g, b);
}
}
}
//---------------------------------------------------------------------------
// wpisywanie jedynek
void __fastcall TForm1::Button4Click(TObject *Sender)
{
int il_r = Edit1 -> Text.ToInt(),
il_g = Edit2 -> Text.ToInt(),
il_b = Edit3 -> Text.ToInt();
int i, j, n, szer, wys;
TColor k;
unsigned char r, g, b;
szer = Image2 -> Picture -> Bitmap -> Width;
wys = Image2 -> Picture -> Bitmap -> Height;
for( i = 0; i < szer; ++i)
{
for( j = 0; j < wys; ++j)
{
k = Image1 -> Picture -> Bitmap -> Canvas -> Pixels[ i][ j];
r = GetRValue( k);
g = GetGValue( k);
b = GetBValue( k);
for( n = 0; n < il_r; ++n)
r = ustaw_bit( r, n, 1);
for( n = 0; n < il_g; ++n)
g = ustaw_bit( g, n, 1);
for( n = 0; n < il_b; ++n)
b = ustaw_bit( b, n, 1);
Image2 -> Picture -> Bitmap -> Canvas -> Pixels[ i][ j] = RGB( r, g, b);
}
}
}
//---------------------------------------------------------------------------
// Randomizowanie bit≤w
void __fastcall TForm1::Button5Click(TObject *Sender)
{
int il_r = Edit1 -> Text.ToInt(),
il_g = Edit2 -> Text.ToInt(),
il_b = Edit3 -> Text.ToInt();
int i, j, n, szer, wys;
TColor k;
unsigned char r, g, b;
szer = Image2 -> Picture -> Bitmap -> Width;
wys = Image2 -> Picture -> Bitmap -> Height;
for( i = 0; i < szer; ++i)
{
for( j = 0; j < wys; ++j)
{
k = Image1 -> Picture -> Bitmap -> Canvas -> Pixels[ i][ j];
r = GetRValue( k);
g = GetGValue( k);
b = GetBValue( k);
for( n = 0; n < il_r; ++n)
r = ustaw_bit( r, n, random( 2));
for( n = 0; n < il_g; ++n)
g = ustaw_bit( g, n, random( 2));
for( n = 0; n < il_b; ++n)
b = ustaw_bit( b, n, random( 2));
Image2 -> Picture -> Bitmap -> Canvas -> Pixels[ i][ j] = RGB( r, g, b);
}
}
}
//---------------------------------------------------------------------------
// Funkcja elementarna.
// W bajcie 'bajt' nadaj bitowi 'poz' wartosc 'bit'
unsigned char TForm1 :: ustaw_bit( unsigned char bajt, int poz, int bit)
{
unsigned char maska[ 8] = {1, 2, 4, 8, 16, 32, 64, 128}; //'1', '10', '100', '1000', ...
if( bit == 1) //wpisywanie jedynki
{
bajt = bajt | maska[ poz];
}
else
{
bajt = bajt & (~maska[ poz]);
}
return bajt;
}
//---------------------------------------------------------------------------